// const _ = require('lodash')

function getsum(a,b,c,d,e){
    return a+b+c+d+e;
}
const curr = curry(getsum)
function curry(func){
    return function curryedfn(...args){
        if(args.length<func.length){//如果实际的参数长度小于应该有的参数的长度
            return function(){//继续执行上面的方法  因为这里的调用形成了闭包，会把第一次调用传的参数保留在agrs里面
                console.log(args,arguments.length)
                return curryedfn(...args.concat(Array.from(arguments)))//第一次调用的参数和剩余参数拼接,arguments是伪数组，需要转换成数组进行拼接，最后得到数组传参需要展开所以加...
            }
        }
        return func(...args)
    }
}
console.log(curr(1)(2)(3)(4)(5))
